package org.catj.util;

import org.catj.entity.*;
import org.catj.xml.CreatureDefinition;

import java.util.*;

public class JobInfo {
    public static Map<String, AttributeScale> ATTRIBUTE_SCALES = new HashMap<String, AttributeScale>();
    public static Map<String, List<String>> JOB_ATTRIBUTES = new HashMap<String, List<String>>();
    public static Set<String> ALL_JOBS = new TreeSet<String>();

    public static final String MINER = "Miner";
    public static final String BITER = "Biter";
    public static final String BOWYER = "Bowyer";
    public static final String ENGRAVER = "Engraver";
    public static final String GEM_SETTER = "Gem setter";
    public static final String BONE_CARVER = "Bone carver";
    public static final String CLOTHIER = "Clothier";
    public static final String STONE_CRAFTER = "Stone crafter";
    public static final String WEAVER = "Weaver";
    public static final String WOOD_CRAFTER = "Wood crafter";
    public static final String CARPENTER = "Carpenter";
    public static final String WOOD_CUTTER = "Wood cutter";
    public static final String SWIMMER = "Swimmer";
    public static final String WRESTLER = "Wrestler";
    public static final String MASON = "Mason";
    public static final String ARMORSMITH = "Armorsmith";
    public static final String METAL_CRAFTER = "Metal crafter";
    public static final String METALSMITH = "Metalsmith";
    public static final String WEAPONSMITH = "Weaponsmith";
    public static final String GLASSMAKER = "Glassmaker";
    public static final String LEATHERWORKER = "Leatherworker";
    public static final String OBSERVER = "Observer";
    public static final String LIAR = "Liar";
    public static final String JUDGE_OF_INTENT = "Judge of intent";
    public static final String INTIMIDATOR = "Intimidator";
    public static final String TEACHER = "Teacher";
    public static final String PACIFIER = "Pacifier";
    public static final String LEADER = "Leader";
    public static final String CONSOLER = "Consoler";
    public static final String PERSUADER = "Persuader";
    public static final String NEGOTIATOR = "Negotiator";
    public static final String FLATTERER = "Flatterer";
    public static final String CONVERSATIONALIST = "Conversationalist";
    public static final String COMEDIAN = "Comedian";
    public static final String DODGER = "Dodger";
    public static final String THROWER = "Thrower";
    public static final String SWORDSMAN = "Swordsman";
    public static final String STRIKER = "Striker";
    public static final String SPEARMAN = "Spearman";
    public static final String SHIELD_USER = "Shield user";
    public static final String PIKEMAN = "Pikeman";
    public static final String MACEMAN = "Maceman";
    public static final String LASHER = "Lasher";
    public static final String KNIFE_USER = "Knife user";
    public static final String KICKER = "Kicker";
    public static final String HAMMERMAN = "Hammerman";
    public static final String FIGHTER = "Fighter";
    public static final String AXEMAN = "Axeman";
    public static final String STUDENT = "Student";
    public static final String RECORD_KEEPER = "Record keeper";
    public static final String ORGANIZER = "Organizer";
    public static final String BUILDING_DESIGNER = "Building designer";
    public static final String SIEGE_OPERATOR = "Siege Operator";
    public static final String PUMP_OPERATOR = "Pump operator";
    public static final String ARMOR_USER = "Armor user";
    public static final String SIEGE_ENGINEER = "Siege engineer";
    public static final String MECHANIC = "Mechanic";
    public static final String STRAND_EXTRACTOR = "Strand extractor";
    public static final String GEM_CUTTER = "Gem cutter";
    public static final String FURNACE_OPERATOR = "Furnace operator";
    public static final String FISHERDWARF = "Fisherdwarf";
    public static final String FISH_CLEANER = "Fish cleaner";
    public static final String WOOD_BURNER = "Wood burner";
    public static final String SOAPER = "Soaper";
    public static final String POTASH_MAKER = "Potash maker";
    public static final String LYE_MAKER = "Lye maker";
    public static final String HERBALIST = "Herbalist";
    public static final String COOK = "Cook";
    public static final String CHEESE_MAKER = "Cheese maker";
    public static final String THRESHER = "Thresher";
    public static final String MILLER = "Miller";
    public static final String MILKER = "Milker";
    public static final String GROWER = "Grower";
    public static final String DYER = "Dyer";
    public static final String BUTCHER = "Butcher";
    public static final String BREWER = "Brewer";
    public static final String WOUND_DRESSER = "Wound dresser";
    public static final String APPRAISER = "Appraiser";
    public static final String DIAGNOSTIC = "Diagnostic";
    public static final String CRUTCH_WALKER = "Crutch walker";
    public static final String BONE_DOCTOR = "Bone doctor";
    public static final String ANIMAL_TRAINER = "Animal trainer";
    public static final String FISH_DISSECTOR = "Fish dissector";
    public static final String TANNER = "Tanner";
    public static final String ANIMAL_DISSECTOR = "Animal dissector";
    public static final String ANIMAL_CARETAKER = "Animal caretaker";
    public static final String CROSSBOWMAN = "Crossbowman";
    public static final String BOWMAN = "Bowman";
    public static final String BLOWGUNNER = "Blowgunner";
    public static final String ARCHER = "Archer";
    public static final String SUTURER = "Suturer";
    public static final String SURGEON = "Surgeon";
    public static final String AMBUSHER = "Ambusher";

    static {
        List<String> minerBiterAttr = new ArrayList<String>();
        minerBiterAttr.add(CreatureDefinition.STRENGTH);
        minerBiterAttr.add(CreatureDefinition.TOUGHNESS);
        minerBiterAttr.add(CreatureDefinition.ENDURANCE);
        minerBiterAttr.add(CreatureDefinition.WILLPOWER);
        minerBiterAttr.add(CreatureDefinition.SPATIAL);
        minerBiterAttr.add(CreatureDefinition.KINESTHETIC);
        JOB_ATTRIBUTES.put(MINER, minerBiterAttr);
        JOB_ATTRIBUTES.put(BITER, minerBiterAttr);
        ALL_JOBS.add(MINER);
        ALL_JOBS.add(BITER);

        List<String> crafterAttr = new ArrayList<String>();
        crafterAttr.add(CreatureDefinition.AGILITY);
        crafterAttr.add(CreatureDefinition.CREATIVITY);
        crafterAttr.add(CreatureDefinition.SPATIAL);
        crafterAttr.add(CreatureDefinition.KINESTHETIC);
        JOB_ATTRIBUTES.put(BOWYER, crafterAttr);
        JOB_ATTRIBUTES.put(ENGRAVER, crafterAttr);
        JOB_ATTRIBUTES.put(GEM_SETTER, crafterAttr);
        JOB_ATTRIBUTES.put(BONE_CARVER, crafterAttr);
        JOB_ATTRIBUTES.put(CLOTHIER, crafterAttr);
        JOB_ATTRIBUTES.put(STONE_CRAFTER, crafterAttr);
        JOB_ATTRIBUTES.put(WEAVER, crafterAttr);
        JOB_ATTRIBUTES.put(WOOD_CRAFTER, crafterAttr);
        ALL_JOBS.add(BOWYER);
        ALL_JOBS.add(ENGRAVER);
        ALL_JOBS.add(GEM_SETTER);
        ALL_JOBS.add(CLOTHIER);
        ALL_JOBS.add(BONE_CARVER);
        ALL_JOBS.add(STONE_CRAFTER);
        ALL_JOBS.add(WEAVER);
        ALL_JOBS.add(WOOD_CRAFTER);

        List<String> carpenterAttr = new ArrayList<String>();
        carpenterAttr.add(CreatureDefinition.STRENGTH);
        carpenterAttr.add(CreatureDefinition.AGILITY);
        carpenterAttr.add(CreatureDefinition.CREATIVITY);
        carpenterAttr.add(CreatureDefinition.SPATIAL);
        carpenterAttr.add(CreatureDefinition.KINESTHETIC);
        JOB_ATTRIBUTES.put(CARPENTER, carpenterAttr);
        ALL_JOBS.add(CARPENTER);

        List<String> cutSwimWrestAttr = new ArrayList<String>();
        cutSwimWrestAttr.add(CreatureDefinition.STRENGTH);
        cutSwimWrestAttr.add(CreatureDefinition.AGILITY);
        cutSwimWrestAttr.add(CreatureDefinition.ENDURANCE);
        cutSwimWrestAttr.add(CreatureDefinition.WILLPOWER);
        cutSwimWrestAttr.add(CreatureDefinition.SPATIAL);
        cutSwimWrestAttr.add(CreatureDefinition.KINESTHETIC);
        JOB_ATTRIBUTES.put(WOOD_CUTTER, cutSwimWrestAttr);
        JOB_ATTRIBUTES.put(SWIMMER, cutSwimWrestAttr);
        JOB_ATTRIBUTES.put(WRESTLER, cutSwimWrestAttr);
        ALL_JOBS.add(WOOD_CUTTER);
        ALL_JOBS.add(SWIMMER);
        ALL_JOBS.add(WRESTLER);

        List<String> metalWorkAttr = new ArrayList<String>();
        metalWorkAttr.add(CreatureDefinition.STRENGTH);
        metalWorkAttr.add(CreatureDefinition.AGILITY);
        metalWorkAttr.add(CreatureDefinition.ENDURANCE);
        metalWorkAttr.add(CreatureDefinition.CREATIVITY);
        metalWorkAttr.add(CreatureDefinition.SPATIAL);
        metalWorkAttr.add(CreatureDefinition.KINESTHETIC);
        JOB_ATTRIBUTES.put(MASON, metalWorkAttr);
        JOB_ATTRIBUTES.put(ARMORSMITH, metalWorkAttr);
        JOB_ATTRIBUTES.put(METAL_CRAFTER, metalWorkAttr);
        JOB_ATTRIBUTES.put(METALSMITH, metalWorkAttr);
        JOB_ATTRIBUTES.put(WEAPONSMITH, metalWorkAttr);
        JOB_ATTRIBUTES.put(GLASSMAKER, metalWorkAttr);
        JOB_ATTRIBUTES.put(LEATHERWORKER, metalWorkAttr);
        ALL_JOBS.add(MASON);
        ALL_JOBS.add(ARMORSMITH);
        ALL_JOBS.add(METAL_CRAFTER);
        ALL_JOBS.add(METALSMITH);
        ALL_JOBS.add(WEAPONSMITH);
        ALL_JOBS.add(GLASSMAKER);
        ALL_JOBS.add(LEATHERWORKER);

        List<String> bowmanAttr = new ArrayList<String>();
        bowmanAttr.add(CreatureDefinition.AGILITY);
        bowmanAttr.add(CreatureDefinition.FOCUS);
        bowmanAttr.add(CreatureDefinition.SPATIAL);
        bowmanAttr.add(CreatureDefinition.KINESTHETIC);
        JOB_ATTRIBUTES.put(AMBUSHER, bowmanAttr);
        JOB_ATTRIBUTES.put(SURGEON, bowmanAttr);
        JOB_ATTRIBUTES.put(SUTURER, bowmanAttr);
        JOB_ATTRIBUTES.put(ARCHER, bowmanAttr);
        JOB_ATTRIBUTES.put(BLOWGUNNER, bowmanAttr);
        JOB_ATTRIBUTES.put(BOWMAN,  bowmanAttr);
        JOB_ATTRIBUTES.put(CROSSBOWMAN, bowmanAttr);
        ALL_JOBS.add(AMBUSHER);
        ALL_JOBS.add(SURGEON);
        ALL_JOBS.add(SUTURER);
        ALL_JOBS.add(ARCHER);
        ALL_JOBS.add(BLOWGUNNER);
        ALL_JOBS.add(BOWMAN);
        ALL_JOBS.add(CROSSBOWMAN);

        List<String> animalCaretakerAttr = new ArrayList<String>();
        animalCaretakerAttr.add(CreatureDefinition.AGILITY);
        animalCaretakerAttr.add(CreatureDefinition.ANALYTICAL);
        animalCaretakerAttr.add(CreatureDefinition.MEMORY);
        animalCaretakerAttr.add(CreatureDefinition.EMPATY);
        JOB_ATTRIBUTES.put(ANIMAL_CARETAKER, animalCaretakerAttr);
        ALL_JOBS.add(ANIMAL_CARETAKER);

        List<String> dissectorAttr = new ArrayList<String>();
        dissectorAttr.add(CreatureDefinition.AGILITY);
        dissectorAttr.add(CreatureDefinition.KINESTHETIC);
        JOB_ATTRIBUTES.put(ANIMAL_DISSECTOR, dissectorAttr);
        JOB_ATTRIBUTES.put(TANNER, dissectorAttr);
        JOB_ATTRIBUTES.put(FISH_DISSECTOR, dissectorAttr);
        ALL_JOBS.add(ANIMAL_DISSECTOR);
        ALL_JOBS.add(TANNER);
        ALL_JOBS.add(FISH_DISSECTOR);

        List<String> animalTrainerAttr = new ArrayList<String>();
        animalTrainerAttr.add(CreatureDefinition.AGILITY);
        animalTrainerAttr.add(CreatureDefinition.TOUGHNESS);
        animalTrainerAttr.add(CreatureDefinition.ENDURANCE);
        animalTrainerAttr.add(CreatureDefinition.INTUITION);
        animalTrainerAttr.add(CreatureDefinition.PATIENCE);
        animalTrainerAttr.add(CreatureDefinition.EMPATY);
        JOB_ATTRIBUTES.put(ANIMAL_TRAINER, animalTrainerAttr);
        ALL_JOBS.add(ANIMAL_TRAINER);

        List<String> boneDoctorAttr = new ArrayList<String>();
        boneDoctorAttr.add(CreatureDefinition.STRENGTH);
        boneDoctorAttr.add(CreatureDefinition.AGILITY);
        boneDoctorAttr.add(CreatureDefinition.FOCUS);
        boneDoctorAttr.add(CreatureDefinition.SPATIAL);
        boneDoctorAttr.add(CreatureDefinition.KINESTHETIC);
        JOB_ATTRIBUTES.put(BONE_DOCTOR, boneDoctorAttr);
        ALL_JOBS.add(BONE_DOCTOR);

        List<String> crutchWalkerAttr = new ArrayList<String>();
        crutchWalkerAttr.add(CreatureDefinition.AGILITY);
        crutchWalkerAttr.add(CreatureDefinition.ENDURANCE);
        crutchWalkerAttr.add(CreatureDefinition.WILLPOWER);
        crutchWalkerAttr.add(CreatureDefinition.SPATIAL);
        crutchWalkerAttr.add(CreatureDefinition.KINESTHETIC);
        JOB_ATTRIBUTES.put(CRUTCH_WALKER, crutchWalkerAttr);
        ALL_JOBS.add(CRUTCH_WALKER);

        List<String> appraiserAttr  = new ArrayList<String>();
        appraiserAttr.add(CreatureDefinition.ANALYTICAL);
        appraiserAttr.add(CreatureDefinition.MEMORY);
        appraiserAttr.add(CreatureDefinition.INTUITION);
        JOB_ATTRIBUTES.put(DIAGNOSTIC, appraiserAttr);
        JOB_ATTRIBUTES.put(APPRAISER, appraiserAttr);
        ALL_JOBS.add(DIAGNOSTIC);
        ALL_JOBS.add(APPRAISER);

        List<String> woundDresserAttr = new ArrayList<String>();
        woundDresserAttr.add(CreatureDefinition.AGILITY);
        woundDresserAttr.add(CreatureDefinition.SPATIAL);
        woundDresserAttr.add(CreatureDefinition.KINESTHETIC);
        woundDresserAttr.add(CreatureDefinition.EMPATY);
        JOB_ATTRIBUTES.put(WOUND_DRESSER, woundDresserAttr);
        ALL_JOBS.add(WOUND_DRESSER);

        List<String> brewerAttr = new ArrayList<String>();
        brewerAttr.add(CreatureDefinition.STRENGTH);
        brewerAttr.add(CreatureDefinition.AGILITY);
        brewerAttr.add(CreatureDefinition.KINESTHETIC);
        JOB_ATTRIBUTES.put(BREWER, brewerAttr);
        ALL_JOBS.add(BREWER);

        List<String> butcherAttr = new ArrayList<String>();
        butcherAttr.add(CreatureDefinition.STRENGTH);
        butcherAttr.add(CreatureDefinition.AGILITY);
        butcherAttr.add(CreatureDefinition.ENDURANCE);
        butcherAttr.add(CreatureDefinition.KINESTHETIC);
        JOB_ATTRIBUTES.put(BUTCHER, butcherAttr);
        JOB_ATTRIBUTES.put(DYER, butcherAttr);
        JOB_ATTRIBUTES.put(GROWER, butcherAttr);
        JOB_ATTRIBUTES.put(MILKER, butcherAttr);
        JOB_ATTRIBUTES.put(MILLER, butcherAttr);
        JOB_ATTRIBUTES.put(THRESHER, butcherAttr);
        ALL_JOBS.add(BUTCHER);
        ALL_JOBS.add(DYER);
        ALL_JOBS.add(GROWER);
        ALL_JOBS.add(MILKER);
        ALL_JOBS.add(MILLER);
        ALL_JOBS.add(THRESHER);

        List<String> cheeseMakerAttr = new ArrayList<String>();
        cheeseMakerAttr.add(CreatureDefinition.STRENGTH);
        cheeseMakerAttr.add(CreatureDefinition.AGILITY);
        cheeseMakerAttr.add(CreatureDefinition.ENDURANCE);
        cheeseMakerAttr.add(CreatureDefinition.ANALYTICAL);
        cheeseMakerAttr.add(CreatureDefinition.CREATIVITY);
        cheeseMakerAttr.add(CreatureDefinition.KINESTHETIC);
        JOB_ATTRIBUTES.put(CHEESE_MAKER, cheeseMakerAttr);
        ALL_JOBS.add(CHEESE_MAKER);

        List<String> cookAttr = new ArrayList<String>();
        cookAttr.add(CreatureDefinition.AGILITY);
        cookAttr.add(CreatureDefinition.ANALYTICAL);
        cookAttr.add(CreatureDefinition.CREATIVITY);
        cookAttr.add(CreatureDefinition.KINESTHETIC);
        JOB_ATTRIBUTES.put(COOK, cookAttr);
        ALL_JOBS.add(COOK);

        List<String> herbalistAttr = new ArrayList<String>();
        herbalistAttr.add(CreatureDefinition.AGILITY);
        herbalistAttr.add(CreatureDefinition.MEMORY);
        herbalistAttr.add(CreatureDefinition.KINESTHETIC);
        JOB_ATTRIBUTES.put(HERBALIST, herbalistAttr);
        ALL_JOBS.add(HERBALIST);

        List<String> woodBurnderAttr = new ArrayList<String>();
        woodBurnderAttr.add(CreatureDefinition.STRENGTH);
        woodBurnderAttr.add(CreatureDefinition.TOUGHNESS);
        woodBurnderAttr.add(CreatureDefinition.ENDURANCE);
        woodBurnderAttr.add(CreatureDefinition.KINESTHETIC);
        JOB_ATTRIBUTES.put(LYE_MAKER, woodBurnderAttr);
        JOB_ATTRIBUTES.put(POTASH_MAKER, woodBurnderAttr);
        JOB_ATTRIBUTES.put(SOAPER, woodBurnderAttr);
        JOB_ATTRIBUTES.put(WOOD_BURNER, woodBurnderAttr);
        ALL_JOBS.add(LYE_MAKER);
        ALL_JOBS.add(POTASH_MAKER);
        ALL_JOBS.add(SOAPER);
        ALL_JOBS.add(WOOD_BURNER);

        List<String> fishCleanerAttr = new ArrayList<String>();
        fishCleanerAttr.add(CreatureDefinition.AGILITY);
        fishCleanerAttr.add(CreatureDefinition.ENDURANCE);
        fishCleanerAttr.add(CreatureDefinition.KINESTHETIC);
        JOB_ATTRIBUTES.put(FISH_CLEANER, fishCleanerAttr);
        ALL_JOBS.add(FISH_CLEANER);

        List<String> fisherDwarfAttr = new ArrayList<String>();
        fisherDwarfAttr.add(CreatureDefinition.STRENGTH);
        fisherDwarfAttr.add(CreatureDefinition.AGILITY);
        fisherDwarfAttr.add(CreatureDefinition.FOCUS);
        fisherDwarfAttr.add(CreatureDefinition.PATIENCE);
        fisherDwarfAttr.add(CreatureDefinition.KINESTHETIC);
        JOB_ATTRIBUTES.put(FISHERDWARF, fisherDwarfAttr);
        ALL_JOBS.add(FISHERDWARF);

        List<String> furnaceOperatorAttr = new ArrayList<String>();
        furnaceOperatorAttr.add(CreatureDefinition.STRENGTH);
        furnaceOperatorAttr.add(CreatureDefinition.TOUGHNESS);
        furnaceOperatorAttr.add(CreatureDefinition.ENDURANCE);
        furnaceOperatorAttr.add(CreatureDefinition.ANALYTICAL);
        furnaceOperatorAttr.add(CreatureDefinition.KINESTHETIC);
        JOB_ATTRIBUTES.put(FURNACE_OPERATOR, furnaceOperatorAttr);
        ALL_JOBS.add(FURNACE_OPERATOR);

        List<String> gemCutterAttr = new ArrayList<String>();
        gemCutterAttr.add(CreatureDefinition.AGILITY);
        gemCutterAttr.add(CreatureDefinition.ANALYTICAL);
        gemCutterAttr.add(CreatureDefinition.SPATIAL);
        gemCutterAttr.add(CreatureDefinition.KINESTHETIC);
        JOB_ATTRIBUTES.put(GEM_CUTTER, gemCutterAttr);
        ALL_JOBS.add(GEM_CUTTER);

        List<String> strandExtractorAttr = new ArrayList<String>();
        strandExtractorAttr.add(CreatureDefinition.STRENGTH);
        strandExtractorAttr.add(CreatureDefinition.AGILITY);
        strandExtractorAttr.add(CreatureDefinition.ENDURANCE);
        strandExtractorAttr.add(CreatureDefinition.ANALYTICAL);
        strandExtractorAttr.add(CreatureDefinition.KINESTHETIC);
        JOB_ATTRIBUTES.put(STRAND_EXTRACTOR, strandExtractorAttr);
        ALL_JOBS.add(STRAND_EXTRACTOR);

        List<String> mechanicAttr = new ArrayList<String>();
        mechanicAttr.add(CreatureDefinition.STRENGTH);
        mechanicAttr.add(CreatureDefinition.AGILITY);
        mechanicAttr.add(CreatureDefinition.ENDURANCE);
        mechanicAttr.add(CreatureDefinition.CREATIVITY);
        mechanicAttr.add(CreatureDefinition.SPATIAL);
        JOB_ATTRIBUTES.put(MECHANIC, mechanicAttr);
        JOB_ATTRIBUTES.put(SIEGE_ENGINEER, mechanicAttr);
        ALL_JOBS.add(MECHANIC);
        ALL_JOBS.add(SIEGE_ENGINEER);

        List<String> pumpOperatorAttr = new ArrayList<String>();
        pumpOperatorAttr.add(CreatureDefinition.STRENGTH);
        pumpOperatorAttr.add(CreatureDefinition.TOUGHNESS);
        pumpOperatorAttr.add(CreatureDefinition.ENDURANCE);
        pumpOperatorAttr.add(CreatureDefinition.WILLPOWER);
        pumpOperatorAttr.add(CreatureDefinition.KINESTHETIC);
        JOB_ATTRIBUTES.put(PUMP_OPERATOR, pumpOperatorAttr);
        JOB_ATTRIBUTES.put(ARMOR_USER, pumpOperatorAttr);
        ALL_JOBS.add(PUMP_OPERATOR);
        ALL_JOBS.add(ARMOR_USER);

        List<String> siegeOperatorAttr = new ArrayList<String>();
        siegeOperatorAttr.add(CreatureDefinition.STRENGTH);
        siegeOperatorAttr.add(CreatureDefinition.TOUGHNESS);
        siegeOperatorAttr.add(CreatureDefinition.ENDURANCE);
        siegeOperatorAttr.add(CreatureDefinition.ANALYTICAL);
        siegeOperatorAttr.add(CreatureDefinition.FOCUS);
        siegeOperatorAttr.add(CreatureDefinition.SPATIAL);
        JOB_ATTRIBUTES.put(SIEGE_OPERATOR, siegeOperatorAttr);
        ALL_JOBS.add(SIEGE_OPERATOR);

        List<String> buildingDesignerAttr = new ArrayList<String>();
        buildingDesignerAttr.add(CreatureDefinition.ANALYTICAL);
        buildingDesignerAttr.add(CreatureDefinition.CREATIVITY);
        buildingDesignerAttr.add(CreatureDefinition.SPATIAL);
        JOB_ATTRIBUTES.put(BUILDING_DESIGNER, buildingDesignerAttr);
        ALL_JOBS.add(BUILDING_DESIGNER);

        List<String> organizerAttr = new ArrayList<String>();
        organizerAttr.add(CreatureDefinition.ANALYTICAL);
        organizerAttr.add(CreatureDefinition.CREATIVITY);
        organizerAttr.add(CreatureDefinition.SOCIALAWARE);
        JOB_ATTRIBUTES.put(ORGANIZER, organizerAttr);
        ALL_JOBS.add(ORGANIZER);

        List<String> recordKeeperAttr = new ArrayList<String>();
        recordKeeperAttr.add(CreatureDefinition.ANALYTICAL);
        recordKeeperAttr.add(CreatureDefinition.MEMORY);
        recordKeeperAttr.add(CreatureDefinition.FOCUS);
        JOB_ATTRIBUTES.put(RECORD_KEEPER, recordKeeperAttr);
        JOB_ATTRIBUTES.put(STUDENT, recordKeeperAttr);
        ALL_JOBS.add(RECORD_KEEPER);
        ALL_JOBS.add(STUDENT);

        List<String> militaryAttr = new ArrayList<String>();
        militaryAttr.add(CreatureDefinition.STRENGTH);
        militaryAttr.add(CreatureDefinition.AGILITY);
        militaryAttr.add(CreatureDefinition.TOUGHNESS);
        militaryAttr.add(CreatureDefinition.WILLPOWER);
        militaryAttr.add(CreatureDefinition.SPATIAL);
        militaryAttr.add(CreatureDefinition.KINESTHETIC);
        JOB_ATTRIBUTES.put(AXEMAN, militaryAttr);
        JOB_ATTRIBUTES.put(FIGHTER, militaryAttr);
        JOB_ATTRIBUTES.put(HAMMERMAN, militaryAttr);
        JOB_ATTRIBUTES.put(KICKER, militaryAttr);
        JOB_ATTRIBUTES.put(KNIFE_USER, militaryAttr);
        JOB_ATTRIBUTES.put(LASHER, militaryAttr);
        JOB_ATTRIBUTES.put(MACEMAN, militaryAttr);
        JOB_ATTRIBUTES.put(PIKEMAN, militaryAttr);
        JOB_ATTRIBUTES.put(SHIELD_USER, militaryAttr);
        JOB_ATTRIBUTES.put(SPEARMAN, militaryAttr);
        JOB_ATTRIBUTES.put(STRIKER, militaryAttr);
        JOB_ATTRIBUTES.put(SWORDSMAN, militaryAttr);
        JOB_ATTRIBUTES.put(THROWER, militaryAttr);
        ALL_JOBS.add(AXEMAN);
        ALL_JOBS.add(FIGHTER);
        ALL_JOBS.add(HAMMERMAN);
        ALL_JOBS.add(KICKER);
        ALL_JOBS.add(KNIFE_USER);
        ALL_JOBS.add(LASHER);
        ALL_JOBS.add(MACEMAN);
        ALL_JOBS.add(PIKEMAN);
        ALL_JOBS.add(SHIELD_USER);
        ALL_JOBS.add(SPEARMAN);
        ALL_JOBS.add(STRIKER);
        ALL_JOBS.add(SWORDSMAN);
        ALL_JOBS.add(THROWER);
        
        List<String> dodgerAttr = new ArrayList<String>();
        dodgerAttr.add(CreatureDefinition.AGILITY);
        dodgerAttr.add(CreatureDefinition.TOUGHNESS);
        dodgerAttr.add(CreatureDefinition.ENDURANCE);
        dodgerAttr.add(CreatureDefinition.WILLPOWER);
        dodgerAttr.add(CreatureDefinition.SPATIAL);
        dodgerAttr.add(CreatureDefinition.KINESTHETIC);
        JOB_ATTRIBUTES.put(DODGER, dodgerAttr);
        ALL_JOBS.add(DODGER);
        
        List<String> comedianAttr = new ArrayList<String>();
        comedianAttr.add(CreatureDefinition.AGILITY);
        comedianAttr.add(CreatureDefinition.CREATIVITY);
        comedianAttr.add(CreatureDefinition.KINESTHETIC);
        comedianAttr.add(CreatureDefinition.LINGUISTIC);
        JOB_ATTRIBUTES.put(COMEDIAN, comedianAttr);
        ALL_JOBS.add(COMEDIAN);
        
        List<String> leaderAttr = new ArrayList<String>();
        leaderAttr.add(CreatureDefinition.LINGUISTIC);
        leaderAttr.add(CreatureDefinition.EMPATY);
        leaderAttr.add(CreatureDefinition.SOCIALAWARE);
        JOB_ATTRIBUTES.put(CONVERSATIONALIST, leaderAttr);
        JOB_ATTRIBUTES.put(FLATTERER, leaderAttr);
        JOB_ATTRIBUTES.put(NEGOTIATOR, leaderAttr);
        JOB_ATTRIBUTES.put(PERSUADER, leaderAttr);
        JOB_ATTRIBUTES.put(CONSOLER, leaderAttr);
        JOB_ATTRIBUTES.put(LEADER, leaderAttr);
        JOB_ATTRIBUTES.put(PACIFIER, leaderAttr);
        JOB_ATTRIBUTES.put(TEACHER, leaderAttr);
        ALL_JOBS.add(CONVERSATIONALIST);
        ALL_JOBS.add(FLATTERER);
        ALL_JOBS.add(NEGOTIATOR);
        ALL_JOBS.add(PERSUADER);
        ALL_JOBS.add(CONSOLER);
        ALL_JOBS.add(LEADER);
        ALL_JOBS.add(PACIFIER);
        ALL_JOBS.add(TEACHER);

        List<String> intimidatorAttr = new ArrayList<String>();
        intimidatorAttr.add(CreatureDefinition.AGILITY);
        intimidatorAttr.add(CreatureDefinition.KINESTHETIC);
        intimidatorAttr.add(CreatureDefinition.LINGUISTIC);
        JOB_ATTRIBUTES.put(INTIMIDATOR, intimidatorAttr);
        ALL_JOBS.add(INTIMIDATOR);

        List<String> judgeAttr = new ArrayList<String>();
        judgeAttr.add(CreatureDefinition.INTUITION);
        judgeAttr.add(CreatureDefinition.EMPATY);
        judgeAttr.add(CreatureDefinition.SOCIALAWARE);
        JOB_ATTRIBUTES.put(JUDGE_OF_INTENT, judgeAttr);
        ALL_JOBS.add(JUDGE_OF_INTENT);

        List<String> liarAttr = new ArrayList<String>();
        liarAttr.add(CreatureDefinition.CREATIVITY);
        liarAttr.add(CreatureDefinition.LINGUISTIC);
        liarAttr.add(CreatureDefinition.SOCIALAWARE);
        JOB_ATTRIBUTES.put(LIAR, liarAttr);
        ALL_JOBS.add(LIAR);

        List<String> observerAttr = new ArrayList<String>();
        observerAttr.add(CreatureDefinition.INTUITION);
        observerAttr.add(CreatureDefinition.FOCUS);
        observerAttr.add(CreatureDefinition.SPATIAL);
        JOB_ATTRIBUTES.put(OBSERVER, observerAttr);
        ALL_JOBS.add(OBSERVER);

        AttributeScale plusPlusScale = new PlusPlusScale();
        AttributeScale plusScale = new PlusScale();
        AttributeScale averageScale = new AverageScale();
        AttributeScale minusScale = new MinusScale();
        //physical attributes
        ATTRIBUTE_SCALES.put(CreatureDefinition.STRENGTH, plusScale);
        ATTRIBUTE_SCALES.put(CreatureDefinition.TOUGHNESS, plusScale);
        ATTRIBUTE_SCALES.put(CreatureDefinition.AGILITY, minusScale);
        ATTRIBUTE_SCALES.put(CreatureDefinition.ENDURANCE, averageScale);
        ATTRIBUTE_SCALES.put(CreatureDefinition.RECUPERATION, averageScale);
        ATTRIBUTE_SCALES.put(CreatureDefinition.DISEASERES, averageScale);
        //soul attributes
        ATTRIBUTE_SCALES.put(CreatureDefinition.ANALYTICAL, plusScale);
        ATTRIBUTE_SCALES.put(CreatureDefinition.FOCUS, plusPlusScale);
        ATTRIBUTE_SCALES.put(CreatureDefinition.WILLPOWER, averageScale);
        ATTRIBUTE_SCALES.put(CreatureDefinition.CREATIVITY, plusScale);
        ATTRIBUTE_SCALES.put(CreatureDefinition.INTUITION, averageScale);
        ATTRIBUTE_SCALES.put(CreatureDefinition.PATIENCE, plusScale);
        ATTRIBUTE_SCALES.put(CreatureDefinition.MEMORY, plusScale);
        ATTRIBUTE_SCALES.put(CreatureDefinition.LINGUISTIC, averageScale);
        ATTRIBUTE_SCALES.put(CreatureDefinition.SPATIAL, plusPlusScale);
        ATTRIBUTE_SCALES.put(CreatureDefinition.MUSICALITY, averageScale);
        ATTRIBUTE_SCALES.put(CreatureDefinition.KINESTHETIC, averageScale);
        ATTRIBUTE_SCALES.put(CreatureDefinition.EMPATY, averageScale);
        ATTRIBUTE_SCALES.put(CreatureDefinition.SOCIALAWARE, averageScale);
    }

    public static Map<String, AttributeScale> getAttributeScales() {
        return ATTRIBUTE_SCALES;
    }

    public static Map<String, List<String>> getJobAttributes() {
        return JOB_ATTRIBUTES;
    }
}
